草庐IT

Java Parallel Streams 关闭线程

全部标签

c# - 我需要在 C# .Net 中创建一个线程安全的静态变量

好吧,它比问题复杂一点。classA{staticintneedsToBeThreadSafe=0;publicstaticvoidM1(){needsToBeThreadSafe=RandomNumber();}publicstaticvoidM2(){print(needsToBeThreadSafe);}}现在我要求在M1()和M2()之间调用“needsToBeThreadSafe”保持线程安全。 最佳答案 怎么样:publicstaticvoidM1(){Interlocked.Exchange(refneedsToBeT

c# - 伙计,我的线程在哪里? (或 : rename a . NET 线程池线程 - 这可能吗?)

有时我发现自己在Debug模式下单步执行一个应用程序,直到我在某个特定的行上点击“步骤”,这会花费太多时间做某事,占用100%的CPU。在这一点上,我点击了“中断”按钮并尝试找出运行时间太长的程序。问题是,这个应用程序有大量的线程在运行,当我点击“中断”时,执行点转到了可能只是在“等待”的GUI线程。然后我必须搜索现有的线程(我数了数——这次是37个!)试图找到我正在执行的线程。我必须查看其中的每一个,直到找到我要找的那一个。我正在运行的线程是异步调用,因此它在线程池线程上运行。我想给这个线程一个描述性的名称,并在操作结束时重置它的名称。问题是,属性Thread.Name只能设置一次,

c# - 当应用程序关闭时,我可以检测到后台线程何时被应用程序杀死吗?

我在C#中使用一个线程,我已将IsBackground属性设置为true。线程在循环中运行一些代码,直到应用程序关闭。当应用程序关闭时,线程也停止执行(因为我设置了IsBackground=true)。应用程序如何终止线程?它似乎不是通过调用中止来完成的,因为我没有得到ThreadAbortException。它发生在幕后吗?我想在循环的finallyblock中做一些回滚。我知道我可以自己在线程上调用abort,但我想知道应用程序如何关闭我的后台线程,以及我是否可以从线程内部对此使用react。我知道我可以订阅Application.ApplicationExit事件,但我在服务和w

c# - 后台 worker 调用之间是否保留了线程本地存储?

是否重用了后台工作线程?具体来说,如果我在backgroundworker的DoWork()方法中设置了一个命名数据槽(线程本地存储),该数据槽的值是否会持续存在,有可能在以后的某个时间被其他线程找到?我不会这么想,但我有这个错误...编辑:Thisblogpost建议BackGroundWorker使用ThreadPool,这意味着线程被重用。所以问题就变成了;重复使用的线程是否可能在调用之间持久保存线程本地存储? 最佳答案 线程池在重用线程时,不会清除线程本地存储中的数据,也不会清除标记有ThreadStaticAttribut

c# - 如何关闭 resharper 中的 "Convert Extension Method to Plain Static"自动重构?

在使用Resharper时,由于某些原因,当我调用扩展方法时,它会自动将其转换为静态方法调用。这就是所谓的ConvertExtensionMethodtoPlainStatic重构。foo.Bar()成为MyStaticExtensions.Bar(foo);具有讽刺意味的是,它随后将此标记为代码异味。我该如何关闭它? 最佳答案 Resharper的IntelliSense中嵌入了此功能。我经常使用Linq-to-sql扩展,所以我禁用了这个功能:Resharper-选项-IntelliSense-启用RadiobuttonVisu

c# - 如何防止 .NET 库在关闭时发送 RST 数据包

我正在做一些测试,试图隔离库(.NET)中的一些奇怪行为。当我通过C++使用WinsockAPI并简单地调用closesocket()时,我看到Windows端发送FIN/ACK数据包,而远程端发回ACK数据包。这就是我所说的优雅结束。但是,在使用C#进行编程时,我没有看到所谓的优雅关闭。在C#中,我打开我的套接字,然后在关闭它时,我看到Windows在第一次调用Socket.Shutdown()时仅发送一个FIN数据包。但是,无论如何,当我在C#中调用Socket.Close()时,都会发送一个RST数据包并且连接会立即断开。这让我感到困惑,因为根据我在网上阅读的内容,TCP关闭过程

c# - Task.ContinueWith 是否捕获调用线程上下文以继续?

下面的Test_Click是在UI线程上运行的代码的简化版本(带有WindowsFormsSynchronizationContext):voidTest_Click(objectsender,EventArgse){vartask=DoNavigationAsync();task.ContinueWith((t)=>{MessageBox.Show("Navigationdone!");},TaskScheduler.FromCurrentSynchronizationContext());}我是否应该显式指定TaskScheduler.FromCurrentSynchronizat

c# - 将关闭按钮(红色 x)添加到 .NET 工具提示

我正在寻找一种向.NETToolTip对象添加关闭按钮的方法,类似于NotifyIcon所具有的按钮。我将工具提示用作使用Show()方法以编程方式调用的消息气球。这工作正常,但没有onclick事件或关闭工具提示的简单方法。您必须在代码中的其他地方调用Hide()方法,我希望工具提示能够自行关闭。我知道网上有几个气球工具提示使用托管和非托管代码通过WindowsAPI执行此操作,但我宁愿呆在舒适的.NET世界中。我有一个调用我的.NET应用程序的第三方应用程序,它在尝试显示非托管工具提示时崩溃。 最佳答案 您可以尝试通过覆盖现有工

c# - 如何在传输过程中关闭请求流时获取 HTTP 响应

TL;DR版本当写入请求流时发生传输错误,我无法访问响应,即使服务器发送了它也是如此。完整版我有一个使用HttpWebRequest将文件上传到Tomcat服务器的.NET应用程序。在某些情况下,服务器会提前关闭请求流(因为它出于某种原因拒绝该文件,例如无效的文件名),并发送带有自定义header的400响应以指示错误原因。问题是如果上传的文件很大,请求流在我写完请求体之前关闭,我得到一个IOException:Message:Unabletowritedatatothetransportconnection:Anexistingconnectionwasforciblyclosedb

c# - 如何使 .NET COM 对象成为单元线程?

.NET对象默认是自由线程的。如果通过COM编码到另一个线程,它们总是被编码到自己,无论创建者线程是否为STA,也无论它们的ThreadingModel注册表值如何。我怀疑,他们汇总了FreeThreadedMarshaler(有关COM线程的更多详细信息,请参见here)。我想让我的.NETCOM对象在编码到另一个线程时使用标准的COM编码器代理。问题:usingSystem;usingSystem.Runtime.InteropServices;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows